package com.smile.utils;

/**
 * 字符串工具类
 * 
 * @author 曾迎颖
 * @date 2016年5月10日 下午3:57:19
 */

public class StringTool {

	/**
	 * 将null转为""
	 * 
	 * @param str
	 * @return
	 */
	public static String nullToEmpty(String str) {
		if (str == null) {
			return "";
		} else {
			return str;
		}
	}

	/**
	 * 将""转为null
	 * @param str
	 * @return
	 */
	public static String emptyToNull(String str) {
		if (str != null && str.trim().equals("")) {
			return null;
		} else {
			return str;
		}
	}

	/**
	 * 将null转为""，并移除首尾多余空格
	 * 
	 * @param str
	 * @return
	 */
	public static String nullToTrimEmpty(String str) {
		if (str == null) {
			return "";
		} else {
			return str.trim();
		}
	}

	/**
	 * 小写转大写
	 * @param str
	 * @return
	 */
	public static String toUpperCase(String str) {
		if (str == null) {
			return null;
		}else {
			return str.trim().toUpperCase();
		}
	}

	/**
	 * 判断字符串是否为空（null、""、"null"）
	 * 
	 * @param str
	 * @return
	 */
	public static boolean isEmpty(String str) {
		return str == null || str.equals("") || str.equalsIgnoreCase("null");
	}

	/**
	 * 判断对象是否为空（null、""、"null"）
	 * 
	 * @param obj
	 * @return
	 */
	public static boolean isEmpty(Object obj) {
		if (obj == null) {
			return true;
		}
		if ("".equals(obj)) {
			return true;
		}
		if ("".equals(obj.toString().trim())) {
			return true;
		}
		if ("null".equalsIgnoreCase(obj.toString().trim())) {
			return true;
		}
		return false;
	}

	/**
	 * 判断字符串是否为空（null、""、"null"），判断之前先移除首尾空格
	 * 
	 * @param str
	 * @return
	 */
	public static boolean isTrimEmpty(String str) {
		return str == null || str.trim().equals("") || str.trim().equalsIgnoreCase("null");
	}

	/**
	 * 判断字符串是否为null
	 * 
	 * @param str
	 * @return
	 */
	public static boolean isNull(String str) {
		return str == null;
	}

	/**
	 * 获取字符串字节数
	 * 
	 * @param str
	 * @return
	 */
	public static int getLength(String str) {
		int length = 0;
		if (str == null || str.equals("")) {
			return length;
		}
		for (int i = 0; i < str.length(); i++) {
			int ascii = Character.codePointAt(str, i);
			if (ascii >= 0 && ascii <= 255) {
				length++;
			} else {
				length += 2;
			}
		}
		return length;
	}

}
